Ayant fait l’aquisition récente d’un routeur Turris Omnia, j’ai du me replonger dans les problématiques de remplacement d’une Livebox par du matériel tier, déjà abordé il y a quelques temps pour mon employeur de l’époque avec un EdgeRouteur Max. La problématique était toutefois un peu différente cette fois, n’ayant pas fait la demande de l’option IP fixe je suis resté en mode IP/DHCP au lieu de PPP. Je précise également qu’il s’agit d’un remplacement de Livebox v3 avec ONT, je n’ai donc pas encore eu à me frotter aux SFP Serrcom qui semblent poser problème aux possesseurs de Livebox v4. Enfin, étant donné que nous n’utilisons ni le téléphone, ni la TV chez moi, j’ai taillé dans les configurations pour rester au plus simple.
Le forum LaFibre.info est incontestablement la référence pour toute information un tant soit peu technique sur la FTTH, et propose déjà une mine d’information pour remplacer une Livebox par un paquet d’alternatives, mais je n’ai pas trouvé d’exemple complet à jour et fonctionnant à la fois pour IPv4 et IPv6 sur mon matériel, je me permet donc de faire une synthèse ici dérivée de ce que j’ai pu glaner ici et là chez eux.
Cette configuration est validée avec les versions courantes de mi-2019 et peut évoluer dans le temps.
Préparation de base
Le Turris Omnia écoute par défaut sur 192.168.1.1/24
Dérivation de l’auth DHCP
Le script suivant sera à appliquer à votre login fti/XXXXXXX pour obtenir la chaîne de charactère utilisée pour l’authentification DHCP.
#!/bin/sh USERNAME=$1 AUTHSTRING=6674692f HEXAUTH=`echo -n ${USERNAME} | od -An -txC | tr -d ' '` echo ${AUTHSTRING}${HEXAUTH}
Notez que le mot de passe fourni par Orange ne sert à rien en DHCP.
IPv4
La configuration de base est à poser dans /etc/config/network, sur l’interface wan.
config interface 'wan' option ifname 'eth1.832' option proto 'dhcp' option broadcast '1' option vendorid 'sagem' option reqopts '0x01 0x15 0x28 0x51 0x58 0x59 0x90' option sendopts '0x4D:2b46535644534c5f6c697665626f782e496e7465726e65742e736f66746174686f6d652e4c697665626f7833 0x5a:00000000000000000000001a0900000558010341010dXXXXXXXXXXXXXXXXXXXXXX'
Remplacez XXXXXXXXXXXXXXXXXXXXXX par la dérivation hexadécimale de vtre identifiant fti.
Une liste de priorités doivent être appliqué en egress pour assurer un bon traitement des paquets par Orange, sinon leur serveur DHCP ignorera votre réponse. Le script devrait se trouver dans /etc/hotplug.d/iface/05-vlanprio.
#!/bin/sh set -x for i in 0 1 2 3 4 5 6 7; do /sbin/ip link set eth1.832 type vlan egress $i:$i >/dev/null done /sbin/ip link set eth1.832 type vlan egress 1:0 >/dev/null /sbin/ip link set eth1.832 type vlan egress 0:6 >/dev/null
J’ai eu un petit problème sur cette partie, normalement un script placé à cet emplacement sur OpenWRT aurait du être appliqué en hotplug lors des changements d’interface, mais en pratique cet évènement ne semble pas fonctionner sur les Turris.
Une solution de contournement consister à executer le script depuis /etc/rc.local à la place. Attention à la façon dont ip est appelé dans ce cas, le PATH des scripts de boot a la mauvaise habitude de renvoyer sur l’ip de busybox qui ne reconnait pas ces commandes d’egress. Il est donc impératif de garder ces chemins absolus pour éviiter toute confusion.
Firewall
Le firewall de base du Turris est déjà prêt à l’utilisation pour ce qui est dans connexions ouvertes et fermées, mais selon votre zone, vous devrez peut-être aussi appliquer des règles de QoS au traffic pour qu’il soit traité correctement par Orange. À placer dans /etc/firewall.user ou dans les règles custom de LuCI.
iptables -t mangle -A POSTROUTING -o eth1.832 -j CLASSIFY --set-class 0000:0001 iptables -t mangle -A POSTROUTING -o eth1.832 -p igmp -j CLASSIFY --set-class 0000:0006 iptables -t mangle -A POSTROUTING -o eth1.832 -p icmp -j CLASSIFY --set-class 0000:0006 iptables -t mangle -A POSTROUTING -o eth1.832 -p udp --dport 67 -j CLASSIFY --set-class 0000:0006 ip6tables -t mangle -A POSTROUTING -j CLASSIFY --set-class 0000:0001 ip6tables -t mangle -A POSTROUTING -p ipv6-icmp -j CLASSIFY --set-class 0000:0006 ip6tables -t mangle -A POSTROUTING -o eth1.832 -p udp --dport 547 -j CLASSIFY --set-class 0000:0006
IPv6
La définition de base est encore à poser dans /etc/config/network, et il faudra là aussi modifier l’option DHCP d’authentification.
config interface 'wan6' option ifname 'eth1.832' option proto 'dhcpv6' option reqprefix 'auto' option reqaddress 'none' option defaultreqopts '0' option sendopts '11:00000000000000000000001a0900000558010341010dXXXXXXXXXXXXXXXXXXXXXX 15:FSVDSL_livebox.Internet.softathome.livebox3 16:0000040e0005736167656d' option reqopts '11 17 23 24' option send_fqdn '0'
À noter que l’option send_fqdn est un équivalent à l’option noclientfqdn qu’on trouve dans les OpenWRT récents. Ces noms seront peut-être uniformisés à terme. Étant donné qu’on passe d’une définition négative à positive, le booléen sera également inversé.
Il manque toujours une option dans le prototype de configuration dhcpv6, l’équivalent de l’option noacceptreconfig dans les OpenWRT récents. Il va donc falloir modifier sa définition dans /lib/netifd/proto/dhcpv6.sh (rajouter juste le -a à l’existant).
proto_run_command "$config" odhcp6c \ -s /lib/netifd/dhcpv6.script \ $opts -a $iface